嗯,要不用上面那个的话就要自己找眼睛了。如果每张照片都比较工整,像四楼小胖子一样,可以这样。测试了一下还可以,不过稳不稳定就另说了
![[不高兴]](/static/emoticons/u4e0du9ad8u5174.png)
![[乖]](/static/emoticons/u4e56.png)
。
faceRotate[img_]:=Module[{pic=img,findeyes,left,right,l,a,p2,p1},findeyes[pic_]:=SelectComponents[DeleteBorderComponents@ColorNegate[Binarize[ImageTrim[pic,FindFaces[pic][[1]]/.{{x1_,y1_},{x2_,y2_}}:>{{x1,y1+(1(y2-y1))/4},{x2,y2-(y2-y1)/10}}],0.3]],"Count",-2];l=ImageDimensions[findeyes[pic]][[1]]/2.;
{left,right}=ImageValuePositions[#,1]&/@First@ImagePartition[findeyes[pic],Scaled[{1/2,1}]];
p1=First@Sort[MaximalBy[left,Last],First];
p2=Last@Sort[MaximalBy[right,Last],First]+{l,0};
a=-N[ArcTan@@(p2-p1)/Degree];
ImageRotate[pic,a Degree,"SameRatioCropping"]]
