Updated on 2022-02-22 GMT+08:00

Searching for Images

This section describes how to use an image to search for similar images using AK/SK authentication.

Replace the AK/SK in the sample code with the actual AK/SK. Use the setPath method of the SearchPictureReq class to specify the URL of the image you want to use to search for similar images. After the configuration is complete, run the code.

  1. The sample code for image searching is as follows:
    import com.alibaba.fastjson.JSON;
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.BasicCredentials;
    import com.huaweicloud.sdk.core.exception.ConnectionException;
    import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
    import com.huaweicloud.sdk.core.exception.ServiceResponseException;
    import com.huaweicloud.sdk.imagesearch.v1.*;
    import com.huaweicloud.sdk.imagesearch.v1.model.*;
    import com.huaweicloud.sdk.imagesearch.v1.region.ImageSearchRegion;
     
    /**
     * Search for similar images from the image library.
     */
    public class RunSearchPictureSolution {
        
    public static void main(String[] args) {
        //Set the obtained AK and SK.
            String ak = "<YOUR AK>";
            String sk = "<YOUR SK>";
            
            ICredential auth = new BasicCredentials()
                .withAk(ak)
                .withSk(sk);
           
            ImageSearchClient client = ImageSearchClient.newBuilder()
                .withCredential(auth)
                //Set the region. In this example, CN North-Beijing4 is used.
                .withRegion(ImageSearchRegion.valueOf("cn-north-4"))
                .build();
            RunSearchPictureRequest request = new RunSearchPictureRequest();
            //Set the instance name.
            request.setInstanceName("instance-name");
            SearchPictureReq body = new SearchPictureReq();
            //Set the image URL.
            body.setPath("https://bucketname.obs.cn-north-4.myhuaweicloud.com/search-test.jpg");
            request.setBody(body);
            try {
                RunSearchPictureResponse response = client.runSearchPicture(request);
                System.out.println(JSON.toJSONString(response));
            } catch (ConnectionException e) {
                e.printStackTrace();
            } catch (RequestTimeoutException e) {
                e.printStackTrace();
            } catch (ServiceResponseException e) {
                e.printStackTrace();
                System.out.println(e.getHttpStatusCode());
                System.out.println(e.getErrorCode());
                System.out.println(e.getErrorMsg());
            }
        }
    }
  2. Execute the sample code. If the image search result is displayed on the console, the code is successfully executed. For details, see Searching for Images.
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    {"count":1,"httpStatusCode":200,"result":[{"path":"https://bucketName.obs.cn-north-4.myhuaweicloud.com/search-test.jpg","sim":1.0,"tags":{}}]}
     
    Process finished with exit code 0